/* A class to facilitate the path finding behavior
 * Used to create a list of vectors that represent 
 * a path to be followed
 */

#pragma once

#include "GameStd.h"
#include <OgreVector3.h>

class Path
{
public:
	Path();
	Path(int NumWaypoints, double MinX, double MinY, double MaxX, double MaxY, bool looped);
	~Path();
	Ogre::Vector3 CurrentWayPoint();
	bool Finished();
	void SetNextWaypoint();
	std::list<Ogre::Vector3> CreateRandomPath(int NumWaypoints, double MinX, double MinY, double MaxX, double MaxY);
	void LoopOn();
	void LoopOff();
	void AddWayPoint(Ogre::Vector3 new_point);
	void Set(std::list<Ogre::Vector3> new_path);
	void Set(Path &path);
	void Clear();
	std::list<Ogre::Vector3> GetPath();

private:
	std::list<Ogre::Vector3> m_WayPoints;
	std::list<Ogre::Vector3>::iterator curWaypoint;
	bool m_Looped;
};